// var a = [];
// for(var i = 0; i < 10; i++) {
//   a[i] = function() {
//     console.log(i)
//   }
// }
// a[6]()


// var tmp = 123;
// if(true) {
//   console.log(tmp)
//   let tmp
// }

// var arr = [12, 34, 32, 89, 4];
// console.log(Math.min(...arr));


var a = 10;
var obj = {
  a: 20,
  fn() {
    setTimeout(() => {
      console.log(this.a)
    });
  }
}

obj.fn();


/**
 * 针对循环引用对象无法进行垃圾回收
 * fn 函数执行完成后，需要进行 obj1 和 obj2 的垃圾回收
 * 但是在进行 obj1 回收时，正在被 obj2 的内部进行引用，同理回收 obj2 时也是在被 obj1 内部进行引用
 * 所以无法进行回收操作
 */
function fn() {
  const obj1 = {}
  const obj2 = {}

  obj1.name = obj2
  obj2.name = obj1

  return;
}

fn();

